Bahasa pengaturcaraan dBase DBASE

Selepas menulis Vulcan untuk IMSAI 8080 dan kemudian melabuhkannya ke CP/M dan MS-DOS (sebagai dBase), Ratliff menambah perintah bagi menerima antara muka skrin video dan juga perintah bagi mempertingkatkan kawalan aliran (seperti DO WHILE/ENDDO) serta logik bersyarat (seperti IF/ENDIF).

Bagi mengendalikan data, dBase menyediakan perintah prosedur terperinci dan fungsi bagi membuka dan merentasi rekod-rekod dalam fail data (contohnya USE, SKIP, GO TOP, GO BOTTOM, dan GO recno), memanipulasi nilai medan (REPLACE dan STORE), di samping memanipulasi rantetan teks (contohnya STR() dan SUBSTR()), nombor dan data. Keupayaannya membuka dan mengubah lebih daripada satu fail yang mengandungi data berkaitan secara serentak mendorong Ashton-Tate mengelar dBase sebagai "pangkalan data hubungan," sungguhpun ia tidak memenuhi kriteria yang ditetapkan oleh model hubungan Dr. Edgar F. Codd (ia boleh dicirikan sebagai hubungan kacukan dan pangkalan data navigasi bersepadu).

dBase menggunakan seni bina pentafsir masa jalanan, yang membenarkan pengguna melakukan perintah dengan menaipnya dalam "dot prompt" baris perintah. Setelah menaip perintah atau fungsi dan menekan butang ↵ Enter, pentafsir segera akan melaksanakan atau menilainya. Sama juga, skrip aturcara (fail teks dengan sambungan .PRG) dijalankan dalam pentafsir (dengan perintah DO), di mana setiap perintah dan pemboleh ubah dinilai pada masa jalanan. Ini menjadikan aturcara-aturcara dBASE pantas dan mudah ditulis serta diuji kerana sang pengaturcara tidak perlu terlebih dahulu mengkompil dan mengaitkan mereka sebelum dijalankan. Pada zaman CPU hanya mempunyai satu atau dua digit megahertz, langkah ini—bagi bahasa lain&mdah;amat memakan masa dan menjemukan. Pentafsir juga mengendali secara dinamik dan automatik kesemua pengurusan ingatan (maksunya tiada ingatan prauntukkan dan tiada notasi hexadesimal), yang lebih penting berbanding ciri lain yang membolehkan seseorang usahawan tanpa pengalaman pengaturcaraan membangunkan sesebuah applikasi.

Walaupun perintah-perintah dBase mudah serta ringkas, ia memberikan cabaran kepada penggunanya apabila mereka menjadi lebih mahir dan apabila pengaturcara profesional semakin tertarik akannya. Aplikasi yang lebih rumit dan kritikal menuntut ciri-ciri pengaturcaraan profesional untuk kebolehharapan dan berprestasi yang lebih baik, tidak lupa juga pembangunan yang lebih produktif.

Lama-kelamaan, pesaing Ashton-Tate memperkenalkan keluaran dan pengkompil klon yang memperkenalkan ciri-ciri pengaturcaraan yang lebih kukuh seperti fungsi takrifan pengguna sebagai tambahan kepada set fungsi bina dalam, pembolehubah dalam skop bagi menulis routin dan fungsi yang kurang berkemungkinan dijejaskan proses luaran, jujukan bagi pengendalian data rumit, ciri-ciri pembungkus bagi menghantar aplikasi sebagai fail boleh laku tanpa pentafsir masa jalanan luar, sintaks berorientasikan objek, dan antaramuka bagi mencapai data pada sistem pengurusan pangkalan data jauh. Ashton-Tate turut melaksanakan kebanyakan ciri-ciri ini dengan pelbagai tahap kejayaan. Ashton-Tate dan pesaingnya turut mula memasukkan SQL, bahasa piwaian ANSI/ISO bagi mencipta, menyunting, dan mengambil data yang disimpan dalam sistem pengurusan pangkalan data hubungan.

Pada akhir 1980-an, beberapa kumpulan pembangun cuba mencipta piwaian bahasa dBase (IEEE 1192). Bermula pada ketika itu bahasa tersebut dirujuk sebagai "xBase" bagi membezakannya dengan produk Ashton-Tate. Ratusan buku yang berkaitan dengan pengaturcaraan dBase dan Xbase telah ditulis. Untuk beberapa tahun pada akhir 1980-an, pengarang Joseph Carrabis, yang menulis beberapa teks dBASE[8], merupakan salah seorang daripada sepuluh pengarang teratas bagi jualan terbaik dunia.

Hari ini, perlaksanaan bahasa dBase telah berkembang supaya tampil dengan banyak ciri yang disasarkan untuk aplikasi perniagaan, antaranya pengaturcaraan berorientasi objek, mengolah data jauh dan teragih melalui SQL, kefungsian Internet, dan interaksi dengan peranti moden.

Contoh pengaturcaraan

Contoh berikut membuka jadual pekerja ("empl"), memberikan kenaikan gaji 10% kepada semua pengurus yang menyelia 1 atau lebih pekerja, lalu mencetak nama dan alamatnya.

 USE empl             REPLACE ALL salary WITH salary * 1.1 FOR supervises > 0 LIST ALL fname, lname, salary TO PRINT * (ulasan: kata-kata simpanan ditulis berhuruf BESAR untuk tujuan ilustrasi)

Perhatikan bahawa nama jadual tidak perlu diulang berkali-kali. Jadual ("semasa") anggapan adalah kekal sama sehingga diberitahu sebaliknya. Ini berbeza dengan SQL yang hampir selalunya jadual perlu dinyatakan dengan jelas. Kerana asal-usulnya ialah sebuah bahasa interaktif pentafsiran, dBASE menggunakan pelbagai teknik mengikut konteks bagi mengurangkan jumlah penaipan. Ini membantu pembangunan interaktif meningkat namun turut menyebabkan pengaturcaraan bermodul—dalam skala yang lebih besar—menjadi lebih susah. Kerana dBASE direka tanpa mengambil kira tentang perkara ini, para pembangun harus berhati-hati dalam mengalihkan (meminjam) kod atur cara yang memegang konteks tertentu, lantas membuatkan pengarangan kod dalam skala yang lebih besar menjadi susah. Rujukan khusus tempat kerja masih boleh dilakukan dengan menggunakan tatatanda anak panah ("B->customer") agar lebih daripada satu jadual boleh dikendalikan secara serentak.

Satu lagi ciri menonjol ialah penggunaan semula klausa yang sama bagi perintah berlainan. Sebagai contoh, klausa FOR mengehadkan skop perintah yang diberi (agak sama dengan klausa WHERE SQL). Perintah berlainan seperti LIST, DELETE, REPLACE, BROWSE, dll. kesemuanya boleh menerima klausa FOR bagi menghadkan atau menapis skop aktiviti mereka. Ini memudahkan bahasa ini dipelajari.

dBase juga merupakan salah satu bahasa berorentasi perniagaan pertama yang melaksanakan penilaian rentetan, lama sebelum Perl.[perlu rujukan]

 i = 2 myMacro = i + 10 i = &myMacro * i kini bernilai 12

Di sini "&" memberitahu penafsir untuk menilai rentetan tersimpan dalam "myMacro" sama seperti ia adalah kod perisian. Ini merupakan contoh ciri yang menjadikan perisian dBase lentur dan dinamik, kadangkala dikenali sebagai "keupayaan meta" dalam profesion ini. Bagaimanapun, ia boleh menimbulkan masaalah bagi prakompil dan bagi menjadikan kod aturcara selamat daripada digodam. Bagaimanapun, dBase cenderung mensasar aplikasi khas bagi syarikat kecil serdahana di mana keselamatan berasaskan pengkompil seringkali kurang diendahkan. Sebagai contoh, tiada siapa akan menimbangkan menulis sistem pengoperasian menggunakan bahasa dBase.